package com.csi.controller.user;

import com.alibaba.fastjson2.JSON;
import com.csi.domain.AccountCredDetails;
import com.csi.domain.AccountDetails;
import com.csi.domain.BindAccount;
import com.csi.pojo.Result;
import com.csi.service.UserService;
import com.csi.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

/**
 * 用户绑卡
 */
@WebServlet("/user/bindCardController")
public class BindCardController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("application/json;charset=utf-8");
        PrintWriter out = resp.getWriter();

        // 获取请求参数
        String userNumber = req.getParameter("userNumber");
        String accountNumber = req.getParameter("accountNumber");

        UserService userService = new UserServiceImpl();

        try {
            // 查询用户所有关联银行卡列表（储蓄卡和活期账户）
            List<AccountDetails> accountDetails = userService.queryAccountList(userNumber);

            // 查询用户所有关联银行卡列表（信用卡）
            List<AccountCredDetails> accountCredDetails = userService.queryCredAccountList(userNumber);

            String accountType = "";
            for (AccountDetails accountDetail : accountDetails) {
                if (accountDetail.getAccountNumber().equals(accountNumber)) {
                    accountType = accountDetail.getCardType();
                    break;
                }
            }
            if (accountType.isEmpty()) {
                for (AccountCredDetails accountCredDetail : accountCredDetails) {
                    if (accountCredDetail.getAccountNumber().equals(accountNumber)) {
                        accountType = "信用卡";
                        break;
                    }
                }
            }

            if (!accountType.isEmpty()) {
                userService.bindCard(userNumber, accountNumber, accountType);
            }else {
                Result result = new Result<>();
                result.setCode(400);
                result.setMsg("该卡未关联");
                out.print(JSON.toJSONString(result));
                return;
            }

            Result result = new Result<>();
            result.setCode(200);
            result.setMsg("success");
            out.print(JSON.toJSONString(result));
        } catch (Exception e) {
            Result result = new Result<>();
            result.setCode(500);
            result.setMsg("服务器内部错误");
            out.print(JSON.toJSONString(result));
            e.printStackTrace();
        } finally {
            out.flush();
            out.close();
        }
    }
}
